layout 이쁘쥬?
flexbox 는 CSS의 새로운 Spec이 될 확률이 상당히 높은 레이아웃을 정의하는 방법입니다. 현재는 Draft를 지나 Candidate Recommendation 상태에 있습니다. react native 의 경우는 이 flexbox 로 컴포넌트들이 배치되게 되어 있습니다. 구글이 Android에서도 flexbox를 통해서 컴포넌트를 배치할 수 있도록 했습니다.
2016/05/10 Best Project(650✰)
google/flexbox-layout
_flexbox-layout - Flexbox for Android_github.com
설치하기
build.gradle 파일에 dependency를 아래와 같이 정의하고 layout.xml에서 사용하면 됩니다.
dependencies {
compile 'com.google.android:flexbox:0.1.1'
}
layout xml파일은 다음과 같은 형태를 띕니다.
<com.google.android.flexbox.FlexboxLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout\_width="match\_parent"
android:layout\_height="match\_parent"
app:flexWrap="wrap"
app:alignItems="stretch"
app:alignContent="stretch" \>
<TextView
android:id="@+id/textview1"
android:layout\_width="120dp"
android:layout\_height="80dp"
app:layout\_flexBasisPercent="50%"
/\>
<TextView
android:id="@+id/textview2"
android:layout\_width="80dp"
android:layout\_height="80dp"
app:layout\_alignSelf="center"
/\>
<TextView
android:id="@+id/textview3"
android:layout\_width="160dp"
android:layout\_height="80dp"
app:layout\_alignSelf="flex\_end"
/\>
</com.google.android.flexbox.FlexboxLayout\>
실행해보기
IDE를 켜고 activity_main.xml을 켜면 다음과 같은 화면이 나옵니다.
새로운 에뮬레이터 qemu 로 실행을 해 보겠습니다.
일단 flex direction에 대해서 확인해 볼 수 있는 예제입니다.
qemu 개좋아염
flexbox 자체에 대해서도 손쉽게 이해할 수 있는 예제들이군요.
Flexbox 에 대해서
flexbox 개요에 대해서는 서문에 약간 언급을 했구요. spec 은 아래에서 찾아 볼 수 있습니다.
CSS Flexible Box Layout Module Level 1
_This section is not normative. CSS 2.1 defined four layout modes - algorithms which determine the size and position of…_www.w3.org
정말 간단한 한글 블로깅은 아래에서 찾아볼 수 있습니다.
CSS - flexbox
_새로운 flexbox 레이아웃 모드는 우리가 CSS로 레이아웃을 잡는 방법을 재정의할 기세입니다. 아쉽게도 flexbox 규격이 최근에 상당히 많이 바뀌었기 때문에 각 브라우저마다 다른 식으로 구현돼 있습니다. …_ko.learnlayout.com
하지만 웹 관점에서 보자면 가장 이해하기 좋은 문서는 이 포스트 입니다.
A Complete Guide to Flexbox | CSS-Tricks
_The Flexbox Layout (Flexible Box) module (currently a W3C Last Call Working Draft) aims at providing a more efficient…_css-tricks.com
사용법이 다 달라요!
네, 아직은 javascript, react-native, android 에서 약간씩은 다르게 사용되고 있습니다. 하지만 기본적인 컨셉(flex-direction,wrap) 등은 같기 때문에 빨리 적응하면 할수록 더 좋을 듯 싶습니다.
이거 꼭 배워야 하나요?
지금 당장은 아닐 수 있습니다. 하지만 web component들이 일반화 되는 시점이 되면 대부분의 layout들은 웹과 native 모두 저렇게 바뀌지 않을까요?
swift의 경우도 github에 개인 프로젝트이기는 하지만 flexbox관련 프로젝트가 올라와 있네요
joshaber/SwiftBox
_SwiftBox - Flexbox in Swift, using Facebook’s css-layout._github.com
By Keen Dev on May 9, 2016.
Exported from Medium on May 31, 2017.